콜 스택(Call Stack)이란 무엇인가
#resource
#javascript
작성일:2025. 4. 19.
수정일:2025. 4. 19.
콜 스택은 함수 호출을 추적하기 위해 자비스크립트 엔진이 사용하는 LIFO(Last-in, First-out) 구조의 메모리 영역이다. 코드가 실행되면서 함수가 호출되면, 해당 함수의 실행 컨텍스트가 생성되어 콜 스택의 맨 위에 쌓인다(push). 함수 실행이 완료되어 값을 반환하면, 해당 실행 컨텍스트는 콜 스택에서 제거된다(pop). 콜 스택의 가장 위에 있는 실행 컨텍스트가 현재 리행중인 컨텍스트이다.
콜 스택은 자바스크립트의 동기적인 코드 실행 순서를 관리한다. 하나의 작업이 완료되어야 다음 작업이 스택에서 실행될 수있다. 이는 이벤트 루프와 비동기 처리 방식을 이해하는 데 필수적인 배경지식 이다.
동작 예시#
- 전역 코드가 실행되면 전역 실행 컨텍스트가 스택에 추가된다.
- 함수
A
가 호출되면A
의 함수 실행컨텍스트가 스택 위에 추가된다 - 함수
A
내부에서 함수B
가 호출되면B
의 함수 실행컨텍스트가 스택 위에 추가된다. - 함수
B
가 실행을마치고 반환하면B
의 함수 실행 컨텍스트가 스택에서 제거된다. - 함수
A
가 실행을 마치고 반환하면A
의 함수 실행 컨텍스트가 제거된다 - 모든 코드가 실행되면 전역 실행 컨텍스트가 스택에서 제거된다.
Stack Oeverflow#
함수가 자기 자신을 계속해서 호출하는 재귀 호출 등에서 종료 조건이 없거나 잘못된 경우, 콜 스택에 실행 컨텍스트가 무한히 쌓이게 되어 스택 용량을 초과하면 "Stack Overflow"에러가 발생한다.